.TH SG_MAP "8" "May 2013" "sg3_utils\-1.36" SG3_UTILS
.SH NAME
sg_map \- displays mapping between Linux sg and other SCSI devices
.SH SYNOPSIS
.B sg_map
[\fI\-a\fR] [\fI-h\fR] [\fI\-i\fR] [\fI\-n\fR] [\fI\-scd\fR] [\fI\-sd\fR]
[\fI\-sr\fR] [\fI\-st\fR] [\fI\-V\fR] [\fI\-x\fR]
.SH DESCRIPTION
.\" Add any additional description here
Sometimes it is difficult to determine which SCSI device a sg device
name (e.g. /dev/sg0) refers to. This command loops through the
sg devices and finds the corresponding SCSI disk, cdrom or tape
device name (if any). Scanners are an example of SCSI devices
that have no alternate SCSI device name apart from their sg device
name.
.PP
This utility is deprecated and has not been updated for years, only very
obvious bugs will be fixed. Unless a very old version of Linux is being
used (e.g.  2.4 series or earlier), then please use a utility like lsscsi(8)
or the facilities offered by udev(8).
.SH OPTIONS
.TP
\fB\-a\fR
assume the sg devices have alphabetical device names and loop
through /dev/sga, /dev/sgb, etc. Default is numeric scan.
Note that sg device nodes with an alphabetical index have been
deprecated since the Linux kernel 2.2 series.
.TP
\fB\-h\fR
print usage message then exit.
.TP
\fB\-i\fR
in addition do a standard INQUIRY and output vendor, product and revision
strings for devices that are found.
.TP
\fB\-n\fR
assume the sg devices have numeric device names and loop
through /dev/sg0, /dev/sg1, etc. Default is numeric scan
.TP
\fB\-scd\fR
display mappings to SCSI cdrom device names of the form
/dev/scd0, /dev/scd1 etc
.TP
\fB\-sd\fR
display mappings to SCSI disk device names
.TP
\fB\-sr\fR
display mappings to SCSI cdrom device names of the form
/dev/sr0, /dev/sr1 etc
.TP
\fB\-st\fR
display mappings to SCSI tape device names
.TP
\fB\-V\fR
print out version string then exit (without further ado).
.TP
\fB\-x\fR
after each active sg device name is displayed there are
five digits: <host_number> <bus> <scsi_id> <lun> <scsi_type>
.SH NOTES
If no options starting with "\-s" are given then the mapping to
all SCSI disk, cdrom and tape device names is shown.
.PP
If the device file system (devfs) is present a line noting
this is output. The "native" devfs scsi hierarchy makes the
relationship between a sg device name and any corresponding
disk, cdrom or tape device name easy to establish. This
replaces the need for this command. However many applications
will continue to look for Linux SCSI device names in their
traditional places. [Devfs supplies a compatibility daemon
called devfsd whose default configuration adds back the
Linux device names in their traditional positions.
.PP
Quite often the mapping information can be derived by
observing the output of the command: "sg_map".
However if devices have been added since boot this can
be deceptive.
.PP
In the Linux kernel 2.6 series something close to the mapping
shown by this utility can be found by analysing sysfs. The
main difference is that sysfs analysis will show the mapping
between sg nodes and other SCSI device nodes in terms of
major and minor numbers. While major 8, minor 16 will usually
be /dev/sdb this is not necessarily so. Facilities associated
with udev may assign major 8, minor 16 some other device node
name. This version of sg_map has been extended to cope with
sparse disk device node names of the form "/dev/sd<str>"
where <str> can be one of [a\-z,aa\-zz,aaa\-zzz]. See the sg_map26
utility for a more precise way (i.e. less directory scanning)
for mapping between sg device names and higher level names;
including finding user defined names.
.PP
This utility was written at a time when hotplugging of SCSI devices
was not supported in Linux. It used a simple algorithm to scan sg
device nodes in ascending numeric or alphabetical order, stopping
after there were 5 consecutive errors.
.PP
In the Linux kernel 2.6 series, this utility uses sysfs to find which
sg device nodes are active and only checks those. Hence there can be
large "holes" in the numbering of sg device nodes (e.g. after an
adapter has been removed) and still all active sg device nodes will
be listed. This utility assumes that sg device nodes are named using
the normal conventions and searches from /dev/sg0 to /dev/sg4095
inclusive.
.SH EXAMPLES
My system has a SCSI disk, a cd writer and a dvd player:
   $ sg_map
   # Note: the devfs pseudo file system is present
   /dev/sg0  /dev/sda
   /dev/sg1  /dev/sr0
   /dev/sg2  /dev/sr1
.PP
In order to find which sg device name corresponds to the disk:
   $ sg_map \-sd
   # Note: the devfs pseudo file system is present
   /dev/sg0  /dev/sda
   /dev/sg1
   /dev/sg2
.PP
The "\-x" option gives the following output:
   sg_map \-x
   # Note: the devfs pseudo file system is present
   /dev/sg0  1 0 1 0  0  /dev/sda
   /dev/sg1  2 0 4 0  5  /dev/sr0
   /dev/sg2  2 0 6 0  5  /dev/sr1
.PP
When a SCSI scanner is added the output becomes:
   $ sg_map
   # Note: the devfs pseudo file system is present
   /dev/sg0  /dev/sda
   /dev/sg1  /dev/sr0
   /dev/sg2  /dev/sr1
   /dev/sg3
.PP
By process of elimination /dev/sg3 must be the scanner.
.SH EXIT STATUS
The exit status of sg_map is 0 when it is successful. Otherwise see
the sg3_utils(8) man page.
.SH AUTHOR
Written by Douglas Gilbert
.SH "REPORTING BUGS"
Report bugs to <dgilbert at interlog dot com>.
.SH COPYRIGHT
Copyright \(co 2000\-2013 Douglas Gilbert
.br
This software is distributed under the GPL version 2. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.SH "SEE ALSO"
.B sg_map26(8)
,
.B scsi_info(8)
,
.B scsidev(8)
,
.B devfsd(8)
,
.B lsscsi(8)
,
.B udev(7)
